<?php

/**
 * 中文验证码
 */
namespace lico\Tool\Captcha;

class Chinese
{

    protected $library = [
        '王', '一', '博', '等', '赵', '丽', '颖',
        '重', '庆', '被', '砸', '女', '孩', '火', '化',
        '网', '约', '车', '老', '板', '自', '杀',
        '韩', '庚', '伴', '娘', '团', '曝', '光',
        '德', '国', '之', '翼', '员', '工', '罢',
        '者', '荣', '耀', '赛', '季',
        '郭', '麒', '麟', '的', '择', '偶', '标', '准',
        '湖', '人', '击', '败', '独', '行', '侠',
        '腾', '讯', '获', '赔', '万', '元',
        '科', '比', '给', '儿', '拍', '照',
        '亚', '洲', '小', '姐', '冠', '军',
        '正', '式', '回', '归', '社', '交',
    ];

    protected $code;
    protected $data;
    protected $config;

    public function __construct($config)
    {
        $this->config = $config;
    }

    /**
     * 随机获取中文字符串
     */
    protected function getRandStr($length)
    {
        if (!$this->config['fontFile'] || !file_exists($this->config['fontFile'])) {
            die('请设置中文字体');
            //如果字体不是中文字体，图形中字体会乱码
        }
        $len = count($this->library) - 1;
        $randstr = '';
        for ($i = 0; $i < $length; $i++) {
            $num = mt_rand(0, $len);
            $randstr .= $this->library[$num];
        }
        return $randstr;
    }

    /**
     * 验证码
     */
    public function getCode($length = '')
    {
        if (is_null($this->code) && $length) {
            $this->code = $this->getRandStr($length);
            $this->data = $this->code;
        }
        return $this->code;
    }

    /**
     * 干扰点
     */
    public function getSpot($length)
    {
        return $this->getRandStr($length);
    }

    /**
     * 获取校验值
     */
    public function getData()
    {
        return $this->data;
    }
}
